package com.cyzy.service;

import com.cyzy.dto.BalancePayDto;
import com.cyzy.dto.MyAllAdoptOrderDto;
import com.cyzy.dto.OrderCreateDto;
import com.cyzy.pojo.Orders;

import java.util.List;

public interface OrderService {
    
    /**
     * 创建订单
     * @param orderCreateDto 订单创建请求数据
     * @return 创建的订单信息
     */
    Orders createOrder(OrderCreateDto orderCreateDto);
    
    /**
     * 余额支付
     * @param balancePayDto 余额支付请求数据
     * @return 支付结果信息
     */
    String balancePay(BalancePayDto balancePayDto);
    
    /**
     * 获取用户的所有认养订单
     * @param userId 用户ID
     * @return 用户的认养订单列表
     */
    List<MyAllAdoptOrderDto> getUserAdoptOrders(Long userId);
    
    /**
     * 获取用户认养中的订单（已付款且租赁期内）
     * @param userId 用户ID
     * @return 用户认养中的订单列表
     */
    List<MyAllAdoptOrderDto> getUserActiveAdoptOrders(Long userId);
    
    /**
     * 获取用户已完成的认养订单（已付款且租赁期已结束）
     * @param userId 用户ID
     * @return 用户已完成的认养订单列表
     */
    List<MyAllAdoptOrderDto> getUserCompletedAdoptOrders(Long userId);
    
    /**
     * 获取用户待支付的认养订单
     * @param userId 用户ID
     * @return 用户待支付的认养订单列表
     */
    List<MyAllAdoptOrderDto> getUserUnpaidAdoptOrders(Long userId);
    
    /**
     * 删除订单（假删除）
     * @param orderId 订单ID
     * @return 删除结果
     */
    Boolean deleteOrder(Long orderId);
    
    /**
     * 取消订单
     * @param orderId 订单ID
     * @return 取消结果
     */
    Boolean cancelOrder(Long orderId);
} 